// API 使用示例
import { authApi, usersApi, rolesApi, departmentsApi, dashboardApi } from './index';
import { get, post, put, del } from '@/utils/request';
import { User, CreateUserRequest, UpdateUserRequest } from './types';

// 认证相关示例
export const authExamples = {
  // 登录
  login: async () => {
    try {
      const result = await authApi.login({
        username: 'admin',
        password: 'admin123'
      });
      console.log('登录成功:', result);
      return result;
    } catch (error) {
      console.error('登录失败:', error);
    }
  },

  // 获取用户信息
  getUserInfo: async () => {
    try {
      const userInfo = await authApi.getUserInfo();
      console.log('用户信息:', userInfo);
      return userInfo;
    } catch (error) {
      console.error('获取用户信息失败:', error);
    }
  }
};

// 用户管理示例
export const userExamples = {
  // 获取用户列表
  getUsers: async () => {
    try {
      const result = await usersApi.getUsers({
        page: 1,
        pageSize: 10,
        status: 'active'
      });
      console.log('用户列表:', result);
      return result;
    } catch (error) {
      console.error('获取用户列表失败:', error);
    }
  },

  // 创建用户
  createUser: async () => {
    try {
      const newUser = await usersApi.createUser({
        username: 'newuser',
        password: 'password123',
        email: 'newuser@example.com',
        phone: '13800138002',
        role: 'user',
        status: 'active'
      });
      console.log('创建用户成功:', newUser);
      return newUser;
    } catch (error) {
      console.error('创建用户失败:', error);
    }
  }
};

// 角色管理示例
export const roleExamples = {
  // 获取角色列表
  getRoles: async () => {
    try {
      const result = await rolesApi.getRoles({
        page: 1,
        pageSize: 10
      });
      console.log('角色列表:', result);
      return result;
    } catch (error) {
      console.error('获取角色列表失败:', error);
    }
  },

  // 获取权限列表
  getPermissions: async () => {
    try {
      const permissions = await rolesApi.getPermissions();
      console.log('权限列表:', permissions);
      return permissions;
    } catch (error) {
      console.error('获取权限列表失败:', error);
    }
  }
};

// 部门管理示例
export const departmentExamples = {
  // 获取部门树形结构
  getDepartmentTree: async () => {
    try {
      const tree = await departmentsApi.getDepartmentTree();
      console.log('部门树:', tree);
      return tree;
    } catch (error) {
      console.error('获取部门树失败:', error);
    }
  }
};

// 仪表盘示例
export const dashboardExamples = {
  // 获取概览数据
  getOverview: async () => {
    try {
      const overview = await dashboardApi.getOverview();
      console.log('仪表盘概览:', overview);
      return overview;
    } catch (error) {
      console.error('获取概览数据失败:', error);
    }
  },

  // 获取用户增长趋势
  getUserGrowth: async () => {
    try {
      const growth = await dashboardApi.getUserGrowth('7d');
      console.log('用户增长趋势:', growth);
      return growth;
    } catch (error) {
      console.error('获取用户增长趋势失败:', error);
    }
  }
};

// 用户相关API示例
export const userApi = {
  // 获取用户列表
  getUsers: (params?: any) => {
    return get<User[]>('/users', params);
  },

  // 获取单个用户
  getUser: (id: number) => {
    return get<User>(`/users/${id}`);
  },

  // 创建用户
  createUser: (data: CreateUserRequest) => {
    return post<User>('/users', data);
  },

  // 更新用户
  updateUser: (id: number, data: UpdateUserRequest) => {
    return put<User>(`/users/${id}`, data);
  },

  // 删除用户
  deleteUser: (id: number) => {
    return del(`/users/${id}`);
  },
};

// 使用示例
export const exampleUsage = async () => {
  try {
    // 成功请求示例
    const users = await userApi.getUsers({ page: 1, pageSize: 10 });
    console.log('用户列表:', users);

    // 创建用户示例（可能触发验证错误）
    const newUser = await userApi.createUser({
      username: '', // 空用户名会触发验证错误
      password: '', // 空密码会触发验证错误
      email: 'test@example.com',
      role: 'user'
    });
    console.log('新用户:', newUser);

  } catch (error) {
    // 错误已经被拦截器处理，这里可以添加额外的错误处理逻辑
    console.error('API调用失败:', error);
  }
};

// 错误处理示例
export const errorHandlingExample = async () => {
  try {
    // 这个请求会触发验证错误
    await userApi.createUser({
      username: '',
      password: '',
      email: 'invalid-email',
      role: 'user'
    });
  } catch (error) {
    // 拦截器已经显示了错误消息，这里可以添加额外的处理
    console.log('捕获到验证错误:', error);
  }
}; 